﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Infra.UI.Common
{
    public static class TypeExtensionMethods
    {
        /// <summary>
        /// Indica se o tipo é um EnumWrapper
        /// </summary>
        /// <param name="type">Type</param>
        /// <returns>true se for um EnumWrapper</returns>
        public static bool IsEnumWrapper(this Type type)
        {
            if (type == null)
                throw new ArgumentNullException("type");

            return type.IsGenericType &&
                   type.GetGenericTypeDefinition() == typeof(EnumWrapper<>);
        }

        ///// <summary>
        ///// Indica se o tipo é um Nullable EnumWrapper
        ///// </summary>
        ///// <param name="type">Type</param>
        ///// <returns>true se for um Nullable EnumWrapper</returns>
        //public static bool IsNullableEnumWrapper(this Type type)
        //{
        //    if (type == null)
        //        throw new ArgumentNullException("type");

        //    return type.IsGenericType &&
        //           type.GetGenericTypeDefinition() == typeof(Nullable<>) &&
        //           type.GetGenericArguments()[0].IsGenericType &&
        //           type.GetGenericArguments()[0].GetGenericTypeDefinition() == typeof(EnumWrapper<>);
        //}
    }
}
